package com.ht.api.call.func.impl.tag;

import javax.sql.DataSource;

import com.ht.api.bean.AjaxResult;
import com.ht.api.bean.LoginBean;
import com.ht.api.call.func.IFunctionCall;
import com.ht.api.db.Db;
import com.ht.api.db.DbConfig;
import com.ht.api.db.Entity;
import com.ht.api.db.task.HtTaskExecutor;
import com.ht.api.db.util.HtUtil;
import com.ht.api.task.TagInitTask;
import com.ht.api.util.UserUtil;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

/**
 * 初始化规则标签
 * @author asq
 * @createTime 2025年3月19日 13:32:22
 */
public class TagInitFunctionCall implements IFunctionCall {

	@Override
	public String getName() {
		return "初始化规则标签";
	}

	@Override
	public JSONObject execute(LoginBean me, JSONObject param, AjaxResult result) {
		// 获取租户ID,并创建ds
		Long tenantId = param.getLong("tenant_id");
		if (tenantId == null) {
			tenantId = UserUtil.getLoginUser().getTenantId();
		}
		DataSource ds = DbConfig.useTenantDb(tenantId);
		
		String tagId = param.getStr("tag_id");

		Entity tag = Entity.create("tag");
		tag.setMainId(tagId);
		tag.set("init_status", 1);
		Db.insert(ds, tag);

		HtUtil.createLog(ds, tagId, "开启初始化！");

		JSONObject taskParam = JSONUtil.createObj();
		taskParam.set("tenant_id", tenantId);
		taskParam.set("tag_id", tagId);
		taskParam.set("user_id", me.getLoginIdStr());
		HtTaskExecutor.submitTask(taskParam, new TagInitTask());

		// 返回客户端信息：已开启标签初始化，请稍后查看.
		return JSONUtil.createObj().set("info", "已开启标签初始化，请稍后查看.");
	}

}
